import router from './router'
import store from './store'

import Nprogress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style

// 全局路由前置守卫，校验权限
const whitelist = [`/login`, '/404']

router.beforeEach(async(to, from, next) => {
  const token = store.getters.token
  Nprogress.start()
  if (token) {
    if (to.path === '/login') {
      next('/')
    } else {
      // 获取用户信息
      // 判断是否获取过用户资料
      if (!store.getters.userId) { // vuex里面没有用户信息
        // 触发获取用户信息的action
        // 获取成功之后再放行
        await store.dispatch('user/getUserInfo')
      }
      // 没有获取过的话，先获取，再放行
      next()
    }
  } else {
    if (whitelist.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
  Nprogress.done()
})

// 全局后置守卫
router.afterEach(() => {
  Nprogress.done()
})
